package com.lib.common.utils

import android.content.Context
import android.widget.ImageView
import com.lib.common.R
import com.lib.framework.manager.ContextManager
import com.lib.framework.module.glide.GlideHlper

/**
 * Copyright (C), 2019-2020
 * FileName: ImageLoadUtil
 * Author: Kevin
 * Date: 2020-01-09 18:00
 * Description: 图片加载工具类
 * History:
 * <author> <time> <version> <desc>
 * 作者姓名 修改时间 版本号 描述
 */
class ImageLoadUtil {

    companion object {

        private val sPlaceholderResId: Int? = null //R.mipmap.ic_avatar

        /**
         * 加载图片
         *
         * @param url 图片地址
         * @param image ImageView
         * @param placeholderResId 占位符图片资源id
         * @param thumbnailUrl 缩略图url，缩略图和原图请求并行启动，如果原图请求在缩略图请求之前完成，则缩略图请求中的图像将不会被展示。
         */
        fun load(url: String, image: ImageView?, placeholderResId: Int? = null,
                 thumbnailUrl: String? = null) {
            if (image == null) return
            val context = ContextManager.applicationContext

            GlideHlper.load(context, url, image,
                placeholderResId = placeholderResId ?: sPlaceholderResId,
                thumbnailUrl = thumbnailUrl)
        }

        /**
         * 加载圆形图片
         *
         * @param url 图片地址
         * @param image ImageView
         * @param placeholderResId 占位符图片资源id
         * @param thumbnailUrl 缩略图url，缩略图和原图请求并行启动，如果原图请求在缩略图请求之前完成，则缩略图请求中的图像将不会被展示。
         */
        fun loadCircle(url: String, image: ImageView?, placeholderResId: Int? = null,
                       thumbnailUrl: String? = null) {
            if (image == null) return
            val context = ContextManager.applicationContext
            GlideHlper.loadCircle(context, url, image,
                placeholderResId = placeholderResId ?: sPlaceholderResId,
                thumbnailUrl = thumbnailUrl)
        }

        /**
         * 加载圆角图片
         *
         * @param url 图片地址
         * @param image ImageView
         * @param placeholderResId 占位符图片资源id
         * @param thumbnailUrl 缩略图url，缩略图和原图请求并行启动，如果原图请求在缩略图请求之前完成，则缩略图请求中的图像将不会被展示。
         */
        fun loadRound(url: String, image: ImageView?, roundingRadius: Int,
                      placeholderResId: Int? = null, thumbnailUrl: String? = null) {
            if (image == null) return
            val context = ContextManager.applicationContext
            GlideHlper.loadRound(context, url, image, roundingRadius,
                placeholderResId = placeholderResId ?: sPlaceholderResId,
                thumbnailUrl = thumbnailUrl)
        }

        /**
         * 加载图片
         *
         * @param imgRedId 图片资源Id
         * @param image ImageView
         */
        fun load(imgRedId: Int, image: ImageView?) {
            if (image == null) return
            val context = ContextManager.applicationContext
            GlideHlper.load(context, imgRedId, image)

        }

        /**
         * 加载图片
         *
         * @param imgRedId 图片资源Id
         * @param image ImageView
         */
        fun loadCircle(imgRedId: Int, image: ImageView?) {
            if (image == null) return
            val context = ContextManager.applicationContext

            GlideHlper.loadCircle(context, imgRedId, image)
        }

        /**
         * 加载图片
         *
         * @param imgRedId 图片资源Id
         * @param image ImageView
         * @param roundingRadius 圆角角度
         */
        fun loadRound(imgRedId: Int, image: ImageView?, roundingRadius: Int) {
            if (image == null) return
            val context = ContextManager.applicationContext

            GlideHlper.loadRound(context, imgRedId, image, roundingRadius)
        }

        /**
         * 清除缓存
         */
        fun clearCache(context: Context) {
            GlideHlper.clearCache(context)
        }
    }
}